Файлы из ISO-8859-1 в UTF-8

Автор geek, 01 Сентября 2010, 01:03

« предыдущая тема - следующая тема »

0 Пользователей и 2 Гостей просматривают эту тему.

geek

Здравствуйте.
Задача: сменить кодировку у группы php файлов, лежащих в одной папке из ISO-8859-1 в UTF-8.

Средство
: Нагуглил следующий скрипт:

[spoiler]#!/bin/bash
FROM=iso-8859-1
TO=UTF-8
ICONV="iconv -f $FROM -t $TO"
# Convert
find /some/folder/ -type f -name "*" | while read fn; do
cp ${fn} ${fn}.bak
$ICONV < ${fn}.bak > ${fn}
rm ${fn}.bak
done
[/spoiler]

Он работает замечательно. У всех файлов, которые он переконвертировал, была кодировка UTF-8.

Но самый главный недостаток то, что все русские буквы были заменены на кракозябры.
Т.е. я открывал в gedit'е файл(а gedit уже умеет с cp1251 по умолчанию работать ) и видел нормальные русские буквы, а кодировка была ISO-8859-1, а сменив скриптом кодировку, узрел кракозябры теперь уже и в gedit'e, хоть кодировка и UTF-8.
Т.е. в принципе можно вручную просто копируя ctrlC-ctrlV из гедита весь код скопировать в файлы с UTF-8, но файлов много и делать долго.
Подскажите, как можно изменить скрипт, чтобы он конвертировал и русский текст в UTF-8 без окракозябривания?
42 - ответ на твой вопрос.

sotrud_nik

Для примера таки файлик бы выложили

geek

01 Сентября 2010, 12:37 #2 Последнее редактирование: 01 Сентября 2010, 12:37 от geek
в приложении
42 - ответ на твой вопрос.

hedgeven

01 Сентября 2010, 13:14 #3 Последнее редактирование: 01 Сентября 2010, 13:15 от hedgeven
$ enca 0-3.php
MS-Windows code page 1251
  LF line terminators

$ iconv -f cp1251 -t utf8 0-3.php<?
require(&#36;_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
&#36;APPLICATION->SetTitle(" &#33;&#33;&#33;");
?><table border="0" bordercolor="white" width="100%"  align="center" 
cellpadding="0" cellspacing="20">

<tr><td>
<font color="2dc6f2" face="arial" ><B>ПРОДУКТ</B></FONT>
<hr color="2dc6f2" width="100%">

</center>
<p align=justify><font size="2" face="arial"><b>
Совершенно новая схема кредитования. С новым продуктом 

<BR><BR>
<CENTER><FONT FACE="ARIAL" COLOR="2DC6F2" SIZE="4"><B>Особенности данного продукта:</B> </FONT>  </CENTER>


<br>• Необходимо три документа:

</table>

<?require(&#36;_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Jah will give us everything...

geek

Цитата: hedgeven от 01 Сентября 2010, 13:14$ enca 0-3.php
MS-Windows code page 1251
 LF line terminators



А я смотрел кодировку в Geany и он смотрел мне в глаза и врал .
А когда я попробовал перевести recode'ом, а не iconv'ом в utf-8 оно мне говорило:
recode: ./0-3.php failed: Ambiguous output in step `CR-LF..data'

Мораль сей басни такова: не смотри кодировку geany, да не переводи recode.
Ramen.

Всем спасибо.
42 - ответ на твой вопрос.